1. Field of the Invention
This invention is related in general to the field of data storage in computer systems. In particular, the invention consists of scanning a read/write cache during a power loss to construct and save a write cache analogous to one residing in a different processing device.
2. Description of the Prior Art
Computer storage systems typically include a high-capacity disk array for storing digital information. To provide redundancy, a computer storage system may utilize multiple data processing servers or may use a single processing server consisting of multiple processing clusters. Each data processing server or processing cluster may be substantially identical and redundant. Additionally, each processing cluster typically has access to the entire disk array.
It is customary for one or more hosts to send requests to the processing clusters to read data from or write data to the disk array. The requests are delivered to the processing clusters over a multi-path communication device such as a bus, switch, router, bridge, point-to-point network, local area network, or other similar connecting device. Once a cluster receives a read-data request, the relevant information is retrieved from the disk array and placed into a read/write memory cache. This read/write cache is relatively fast compared with other storage mechanisms and is typically volatile memory, i.e., data stored in this cache will become corrupted should the cache lose electrical power. Accessing the data from the read/write cache is much faster than retrieving information directly from the disk array. The information is passed to the requesting host and a copy is maintained in the read/write cache in case it is again requested by a host. Because the information has not been modified, there is no need to maintain another copy of the data elsewhere in the computer storage system, other than the original copy residing in the disk array.
If a host transmits a write request to a processing cluster, either new information is being written to the disk array or information already residing in the disk array is being modified. These write request tasks are more critical than simple read requests, as a failure to deliver the new or modified information to the disk array may result in a permanent loss of information. To provide redundancy, write requests may be sent to a primary processing cluster and a secondary processing cluster. The primary processing cluster places the new data in its volatile read/write cache and then transfers it to the disk array.
While the new information is being written to the volatile read/write cache of the primary processing cluster, a copy of the data is also written to a non-volatile memory device in the secondary processing cluster. The non-volatile memory device is intended to maintain a copy of the information in the event that electrical power to either processing cluster is interrupted. However, non-volatile memory is usually much smaller than volatile memory due to cost considerations.
In a truly redundant computer storage system, each processing cluster may dominate access to a portion of the disk array. If this cluster fails, then another cluster may access the portion of the disk array dominated by the first processing cluster. However, modified data which has not yet been written to the disk array may be lost, corrupted, or non-accessible. While the primary processing cluster maintains a copy of its own modified data, this copy resides in the volatile memory and is interspersed with read data. The typically smaller non-volatile memory only maintains write requests from other processing clusters. It is desirable that a processing cluster be able to retrieve modified data from the volatile read/write cache before it becomes corrupted due to a power loss. Additionally, it is desirable to save this modified data to a static storage device such as a hard-drive, floppy disk-drive, optical disk drive or a non-volatile memory device.
In U.S. Pat. No. 6,8535,996, James Brewer et al. disclose a method and system for protecting user data during power failures on a network-computer-class data processing system. The network-computer-class data processing system is integrated with a power supply having an early power-fail warning signal to ensure that unsaved changes to user data files are saved before a complete power failure strikes the data processing system.
An important aspect of Brewer's invention is that a table of file changes is maintained in non-volatile memory. The entire contents of the table are saved to non-volatile storage in the time interval between the early power-fail warning signal and the complete power failure. The table of user data changes can then be applied to recreate the user's data after power is restored. However, Brewer does not address recovering data which has been sent to more than one processing cluster. Additionally, the Brewer method requires consistent, persistent, and continuous overhead to maintain the table residing in non-volatile memory. Accordingly, it would be advantageous to incur this overhead only in the event of a power loss and provide a means of replicating information residing in the non-volatile memory of other processing clusters.